package com.johann.datatype;

import java.io.Console;

/**
 * @Description: equals 与 ==
 *
 * 对于基本数据类型（byte，short，char，int，float，double，long，boolean）来说，
 * 他们是作为常量在方法区中的常量池里面以HashSet策略存储起来的，
 * 对于这样的字符串 "123" 也是相同的道理，在常量池中，
 * 一个常量只会对应一个地址，因此不管是再多的 123,"123" 这样的数据都只会存储一个地址，
 * 所以所有他们的引用都是指向的同一块地址
 *
 */
public class equalanddeng {
    public static void main(String[] args) {

        Integer f=127;
        Integer g=127;

        System.out.println(f.equals(g));    //true
        System.out.println(f == g);         //true

        /*
        对于基本数据的包装类型（Byte, Short, Character，Integer，Float, Double，Long,  Boolean）除了Float和Double之外，
        其他的六种都是实现了常量池的，因此对于这些数据类型而言，一般我们也可以直接通过==来判断是否相等
        */
        Integer h=128;
        Integer i=128;
        System.out.println(h == i);         //false  包装类Integer取值范围在[-128~127]
        System.out.println(i.equals(h));    //true;

        String str1="ABC";
        String str2 = new String("ABC");
        System.out.println(str1 == str2);      //false
        System.out.println(str1.equals(str2)); //true

        //Java.io.Console 只能用在标准输入、输出流未被重定向的原始控制台中使用，在 Eclipse 或者其他 IDE 的控制台是用不了的。
        Console console=System.console();
//        String username=console.readLine("User name:");
//        char[] password=console.readPassword("Password:");


    }
}
